<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基本数据类型和引用数据类型的区别</title>
</head>
<body>
<script>
    /*JS中数据类型有6种
    *       1.String 字符串
    *       2.Number 数值
    *       3.Boolean 布尔值
    *       4.Null 空值
    *       5.Undefined 未定义
    *       以上5种是基本类型，以后我们看到的值只要不是上面的5中 都是对象
    *       6.Object 对象
    *   JS中的变量是保存在栈内存的，
    *           基本数据类型的直接存储在栈内存里，值与值之间是独立的，修改一个变量不会影响其他的变量
    *           引用数据类型--对象的值是保存在堆内存的，
    *           看见new意味着 在堆内存里开发一个空间 专门用来保存这个对象的
    *           每创建一个新的对象，就会在堆内存中开启一个空间， 而变量保存的是对象的内存地址(对象的引用)，如果2个变量保存的是
    *           同一个对象引用，当一个通过一个变量改变属性时，另一个也受到影响
    *           当比较两个基本数据类型的值时，就是比较值
    *           而比较两个引用数据类型时，它是比较的对象的内存地址
    *               如果两个对象一模一样，但是地址不同，它也会返回false
    * */
    //举例1 a b值都是独立的
    var a=123;
    var b=a;
    a++;
    console.log("a="+a);
    console.log("b="+b);
    //举例2 a b值都是独立的
    var obj=new Object();
        obj.name="孙悟空";
        obj2=obj;
        console.log(obj.name);//返回孙悟空
        console.log(obj2.name);//返回孙悟空
        //修改属性
        obj.name="猪八戒";
    console.log(obj.name);//返回猪八戒
    console.log(obj2.name);//返回猪八戒
        //修改对象
    obj2=null;//改了，obj没变，切断了 栈内存与堆内存之间的联系 对obj没有任何影响
    console.log(obj.name);//返回猪八戒
    // console.log(obj2.name);//没找到值

</script>
</body>
</html>